import java.util.Arrays;

public class Main {
    /**
     * 螺旋矩阵 II
     * https://leetcode.cn/problems/spiral-matrix-ii/
     * 给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
     */
    public static void main(String[] args) {
        int n = 3;
        int[][] answers = new Main().generateMatrix(n);
        System.out.println(Arrays.deepToString(answers));
    }
    public int[][] generateMatrix(int n) {
        int[][] results = new int[n][n];
        int num = 1;
        int loop = 0;
        for (int start = 0; loop++ < n / 2; start++) {
            int i, j;
            // 从左至右
            for (j = start; j < n - loop; j++) {
                results[start][j] = num++;
            }
            // 从上至下
            for (i = start; i < n - loop; i++) {
                results[i][j] = num++;
            }
            // 从右至左
            for (; j >= loop; j--) {
                results[i][j] = num++;
            }
            // 从下至上
            for (; i >= loop; i--) {
                results[i][j] = num++;
            }
        }
        if (n % 2 == 1) {
            results[loop - 1][loop - 1] = n * n;
        }
        return results;
    }
}
